package is.model;

import is.NullUtil;
import is.interfaces.Bean;
import is.interfaces.Dao;
import is.model.exceptions.ObjectNotFoundException;
import java.sql.*;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author aspr0
 */
//public class Daold<Datatype> implements Dao<Datatype>
//{
//
//    @Override
//    public void objectExists() throws SQLException, ObjectNotFoundException
//    {
//
//    }
//
//    /**
//     * Provides 'part0, part1' statement output
//     *
//     * @param parts
//     * @return
//     */
//    private String organizeBycomma(String[] fields, String[] values)
//    {
//        String queryCanvas = "(%s) values (%s)";
//        String delimiter = ", ";
//
//        String fieldsString = "";
//        String valuesString = "";
//
//        Integer toStringCount = 0;
//
//        for (int partNum = 0; partNum < fields.length; partNum++)
//        {
//            if (!values[partNum].isEmpty())
//            {
//                toStringCount++;
//
//                fieldsString += (toStringCount == 1) ? fields[partNum] : delimiter + fields[partNum];
//
//                String quotedValue = String.format("'%s'", values[partNum]);
//                valuesString += (toStringCount == 1) ? quotedValue : delimiter + quotedValue;
//            }
//        }
//
//        return String.format(queryCanvas, fieldsString, valuesString);
//    }
//
//    /**
//     * Provides 'field0 = value0, field1 = value1' statement output
//     *
//     * @param fields
//     * @param values
//     * @return
//     */
//    private String organizeByeqsign(String[] fields, String[] values)
//    {
//        String query = "";
//        String equalSign = " = ";
//        String delimiter = ", ";
//        String defaultString = "default";
//        String part;
//
//        for (int partNum = 0; partNum < fields.length; partNum++)
//        {
//            if (values[partNum].isEmpty())
//            {
//                part = fields[partNum] + equalSign + defaultString;
//            }
//            else
//            {
//                String quotedValue = String.format("'%s'", values[partNum]);
//                part = fields[partNum] + equalSign + quotedValue;
//            }
//
//            query += (partNum < fields.length - 1) ? part + delimiter : part;
//        }
//
//        return query;
//    }
//
//    /**
//     * Provides "field0 regex '^value0.*' and field1 regex '^value1.*'" statement output
//     *
//     * @param fields
//     * @param values
//     * @return
//     */
//    private String organizeRegex(Integer id, String[] fields, String[] values)
//    {
//        String delimiter = " and ";
//        String canvas = "%s regexp '.*%s.*'";
//        String emptyRegexCanvas = "(%s regexp '^%s.*' or %s is null)";
//
//        String idString = NullUtil.toString(id);
//
//        String query = String.format(canvas, "id", idString) + delimiter;
//
//        for (int partNum = 0; partNum < fields.length; partNum++)
//        {
//            String part;
//
//            if (values[partNum].isEmpty())
//            {
//                part = String.format(emptyRegexCanvas, fields[partNum], values[partNum], fields[partNum]);
//            }
//            else
//            {
//                part = String.format(canvas, fields[partNum], values[partNum]);
//            }
//            query += (partNum < fields.length - 1) ? part + delimiter : part;
//        }
//
//        return query;
//    }
//
//    /**
//     * Provides "field0 = value0 and field1 = value1" statement output. Empty values omitted from statement
//     *
//     * @param fields
//     * @param values
//     * @return
//     */
//    private String organizeWhere(Integer id, String[] fields, String[] values)
//    {
//        String delimiter = " and ";
//        String canvas = "%s = %s";
//        String nullCanvas = "%s is null";
//
//        String idString = NullUtil.toString(id);
//
//        String query = (idString.isEmpty()) ? "" : String.format(canvas, "id", idString) + delimiter;
//
//        LinkedList<String> parts = new LinkedList<String>();
//
//        for (int partNum = 0; partNum < fields.length; partNum++)
//        {
//
//            if (!values[partNum].isEmpty())
//            {
//                Boolean isZero = false;
//
//                try
//                {
//                    /* Added for compatibility with DB INT NULL like parentId == 0 */
//                    Integer valueInteger = Integer.parseInt(values[partNum]);
//
//                    if (valueInteger == 0)
//                    {
//                        parts.add(String.format(nullCanvas, fields[partNum]));
//                        isZero = true;
//                    }
//                }
//                catch (NumberFormatException e)
//                {
//                }
//
//                if (!isZero)
//                {
//                    parts.add(String.format(canvas, fields[partNum], values[partNum]));
//                }
//            }
//
//        }
//
//        for (int partNum = 0; partNum < parts.size(); partNum++)
//        {
//            query += (partNum < parts.size() - 1) ? parts.get(partNum) + delimiter : parts.get(partNum);
//        }
//
//        return query;
//    }
//}
